/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package strategy;

import java.util.ArrayList;
import java.util.List;
import strategy.modelos.Campo;
import strategy.modelos.Compania;
import strategy.modelos.GoToPrisao;
import strategy.modelos.LucrosOuDividendos;
import strategy.modelos.ParadaLivre;
import strategy.modelos.PontoPartida;
import strategy.modelos.Prissao;
import strategy.modelos.SorteReves;
import strategy.modelos.Terreno;

/**
 *
 * @author Lucas ~~ Singleton
 */
public class ListaCampos {

    private static ListaCampos instancia;
    private List<Campo> listaCampos;

    public ListaCampos() {
        listaCampos = new ArrayList<Campo>();
        criaCampos();
    }

    public static ListaCampos getInstancia() {
        if (instancia == null) {
            synchronized (ListaCampos.class) {
                if (instancia == null) {
                    instancia = new ListaCampos() {
                    };
                }
            }
        }
        return instancia;
    }

    public List<Campo> getListaCampos() {
        return listaCampos;
    }

    private void criaCampos() {
        listaCampos.add(new PontoPartida(0));
        listaCampos.add(new Terreno("Leblon", 100, "Roxo", 1));
        listaCampos.add(new SorteReves(2));
        listaCampos.add(new Terreno("Av. Presidente Vargas", 60, "Roxo", 3));
        listaCampos.add(new Terreno("Av. Nossa S. de Copacabana", 60, "Roxo", 4));
        listaCampos.add(new Compania("Companhia Ferroviaria", 200, 5));
        listaCampos.add(new Terreno("Av. Brigadeiro Faria Lima", 200, "Azul piscina", 6));
        listaCampos.add(new Compania("Compania de Viação", 200, 7));
        listaCampos.add(new Terreno("Av. Rebouças", 220, "Azul piscina", 8));
        listaCampos.add(new Terreno("Av. 9 de Julho", 220, "Azul piscina", 9));
        listaCampos.add(new Prissao(10));
        listaCampos.add(new Terreno("Av. Europa", 200, "Azul forte", 11));
        listaCampos.add(new SorteReves(12));
        listaCampos.add(new Terreno("Rua Augusta", 180, "Azul forte", 13));
        listaCampos.add(new Terreno("Av. Pacaembú", 180, "Azul forte", 14));
        listaCampos.add(new Compania("Companhia de Taxi", 150, 15));
        listaCampos.add(new SorteReves(16));
        listaCampos.add(new Terreno("Interlagos", 350, "Laranja", 17));
        listaCampos.add(new LucrosOuDividendos(200, 18));
        listaCampos.add(new Terreno("Morumbi", 400, "Laranja", 19));
        listaCampos.add(new ParadaLivre(20));
        listaCampos.add(new Terreno("Flamengo", 120, "Vermelho", 21));
        listaCampos.add(new SorteReves(22));
        listaCampos.add(new Terreno("Botafogo", 100, "Vermelho", 23));
        listaCampos.add(new LucrosOuDividendos(-200, 24));
        listaCampos.add(new Compania("Compania de Navegação", 150, 25));
        listaCampos.add(new Terreno("Av. Brasil", 160, "Amarelo", 26));
        listaCampos.add(new SorteReves(27));
        listaCampos.add(new Terreno("Av. Paulista", 140, "Amarelo", 28));
        listaCampos.add(new Terreno("Av. Jardim Europa", 140, "Amarelo", 29));
        listaCampos.add(new GoToPrisao(30));
        listaCampos.add(new Terreno("Copacabana", 260, "Verde", 31));
        listaCampos.add(new Compania("Companhia de Aviação", 200, 32));
        listaCampos.add(new Terreno("Av. Viera Souto", 320, "Verde", 33));
        listaCampos.add(new Terreno("Av. Atlântica", 300, "Verde", 34));
        listaCampos.add(new Compania("Companhia de Taxi Aéreo", 200, 35));
        listaCampos.add(new Terreno("Ipanema", 300, "Verde", 36));
        listaCampos.add(new SorteReves(37));
        listaCampos.add(new Terreno("Jardim Paulista", 200, "Azul fraco", 38));
        listaCampos.add(new Terreno("Brooklin", 260, "Azul fraco", 39));
    }
    
    public Campo buscaCampo(int id){
        for (Campo campo : listaCampos) {
            if(campo.getIdCampo() == id){
                return campo;
            }
        }
        return null;
    }
}
